package com.tianyu.inspection.service.api;

import com.tianyu.inspection.entity.User;
import com.tianyu.inspection.entity.model.QueryMo;
import com.tianyu.inspection.entity.vo.Ro;

/**********************************
 * @Author YSW
 * @Description IUserService
 * @Date 2021/1/7 - 11:19
 **********************************/

public interface IUserService extends IBaseService<User>{
    /**
     * 查询用户数量(判断用户是否存在)
     * @param username
     * @return
     */
    User selectUserByUsername(String username);

    /**
     * 查询用户数量(判断用户是否存在)
     * @param phone
     * @return
     */
    User selectUserByUserPhone(String phone);

    /**
     * 查询用户数量(判断用户是否存在)
     * @param queryMo
     * @return
     */
    Integer selectCount(QueryMo queryMo);

    /**
     * 用户登录
     * @param user 用户信息
     * @return 用户信息
     */
    Ro<User> login(User user);

    /**
     * 退出登录
     * @param uid 用户ID
     * @param token 用户Token
     * @return Void
     */
    Ro<Void> logout(Integer uid,String token);

    /**
     * 获取Redis缓存用户登录状态
     * @param userId 用户ID
     * @return 用户信息
     */
    User cacheUserById(Integer userId);
}
